{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "orig_nbformat": 2,
    "colab": {
      "name": "Lorenz_inverse_Colab.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/lululxvi/deepxde/blob/master/examples/Lorenz_inverse_Colab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CkRhl-XghLCF",
        "colab_type": "text"
      },
      "source": [
        "Install packages (run only once in the runtime)"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "zvbSafs1hKnd",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "!pip install deepxde"
      ],
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1sfGVj1Zg63V",
        "colab_type": "text"
      },
      "source": [
        "Imports and functions"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eyuhFn4fgkld",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 102
        },
        "outputId": "3ca31e87-1428-4e7e-ff46-347ac74431a7"
      },
      "source": [
        "from __future__ import absolute_import\n",
        "from __future__ import division\n",
        "from __future__ import print_function\n",
        "\n",
        "import io\n",
        "import re\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "import requests\n",
        "\n",
        "import deepxde as dde\n",
        "from deepxde.backend import tf\n",
        "\n",
        "\n",
        "# get training data\n",
        "def gen_traindata():\n",
        "    response = requests.get('https://github.com/lululxvi/deepxde/raw/master/examples/dataset/Lorenz.npz')\n",
        "    response.raise_for_status()\n",
        "    data = np.load(io.BytesIO(response.content))\n",
        "    return data[\"t\"], data[\"y\"]\n",
        "\n",
        "# parameters to be identified\n",
        "C1 = tf.Variable(1.0)\n",
        "C2 = tf.Variable(1.0)\n",
        "C3 = tf.Variable(1.0)\n",
        "\n",
        "# true values, see p. 15 in https://arxiv.org/abs/1907.04502\n",
        "C1true = 10\n",
        "C2true = 15\n",
        "C3true = 8/3\n",
        "\n",
        "# define system ODEs\n",
        "def Lorenz_system(x, y):\n",
        "    \"\"\"Lorenz system.\n",
        "    dy1/dx = 10 * (y2 - y1)\n",
        "    dy2/dx = y1 * (28 - y3) - y2\n",
        "    dy3/dx = y1 * y2 - 8/3 * y3\n",
        "    \"\"\"\n",
        "    y1, y2, y3 = y[:, 0:1], y[:, 1:2], y[:, 2:]\n",
        "    dy1_x = dde.grad.jacobian(y, x, i=0)\n",
        "    dy2_x = dde.grad.jacobian(y, x, i=1)\n",
        "    dy3_x = dde.grad.jacobian(y, x, i=2)\n",
        "    return [\n",
        "        dy1_x - C1 * (y2 - y1),\n",
        "        dy2_x - y1 * (C2 - y3) + y2,\n",
        "        dy3_x - y1 * y2 + C3 * y3,\n",
        "    ]\n",
        "\n",
        "def boundary(_, on_initial):\n",
        "    return on_initial"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow 2 backend.\n",
            "\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "non-resource variables are not supported in the long term\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "c8yTpgeIgpEa",
        "colab_type": "text"
      },
      "source": [
        "Define data and BCs"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "V5GUlQ_4goNr",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        },
        "outputId": "04b9ae60-78cf-48b3-ebfe-7fe55964bf85"
      },
      "source": [
        "# define time domain\n",
        "geom = dde.geometry.TimeDomain(0, 3)\n",
        "\n",
        "# Initial conditions\n",
        "ic1 = dde.IC(geom, lambda X: -8, boundary, component=0)\n",
        "ic2 = dde.IC(geom, lambda X: 7, boundary, component=1)\n",
        "ic3 = dde.IC(geom, lambda X: 27, boundary, component=2)\n",
        "\n",
        "# Get the training data\n",
        "observe_t, ob_y = gen_traindata()\n",
        "observe_y0 = dde.PointSetBC(observe_t, ob_y[:, 0:1], component=0)\n",
        "observe_y1 = dde.PointSetBC(observe_t, ob_y[:, 1:2], component=1)\n",
        "observe_y2 = dde.PointSetBC(observe_t, ob_y[:, 2:3], component=2)\n",
        "\n",
        "# define data object\n",
        "data = dde.data.PDE(\n",
        "    geom,\n",
        "    Lorenz_system,\n",
        "    [ic1, ic2, ic3, observe_y0, observe_y1, observe_y2],\n",
        "    num_domain=400,\n",
        "    num_boundary=2,\n",
        "    anchors=observe_t,\n",
        ")\n",
        "\n",
        "plt.plot(observe_t, ob_y)\n",
        "plt.xlabel('Time')\n",
        "plt.legend(['x','y','z'])\n",
        "plt.title('Training data')\n",
        "plt.show()\n"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qeuWXbSE4SZi",
        "colab_type": "text"
      },
      "source": [
        "Train network"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "usZzo2ylv4UA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "outputId": "06061756-ab06-46a0-8c32-8f9205cc6507"
      },
      "source": [
        "# define FNN architecture and compile\n",
        "net = dde.maps.FNN([1] + [40] * 3 + [3], \"tanh\", \"Glorot uniform\")\n",
        "model = dde.Model(data, net)\n",
        "model.compile(\"adam\", lr=0.001)\n",
        "\n",
        "# callbacks for storing results\n",
        "fnamevar = \"variables.dat\"\n",
        "variable = dde.callbacks.VariableValue(\n",
        "    [C1, C2, C3], \n",
        "    period=1,\n",
        "    filename=fnamevar\n",
        ")\n",
        "\n",
        "losshistory, train_state = model.train(epochs=60000, callbacks=[variable])"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Compiling model...\n",
            "Building feed-forward neural network...\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/deepxde/maps/fnn.py:82: dense (from tensorflow.python.keras.legacy_tf_layers.core) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Use keras.layers.Dense instead.\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/legacy_tf_layers/core.py:187: Layer.apply (from tensorflow.python.keras.engine.base_layer_v1) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Please use `layer.__call__` method instead.\n",
            "'build' took 0.085865 s\n",
            "\n",
            "'compile' took 1.032210 s\n",
            "\n",
            "Initializing variables...\n",
            "Training model...\n",
            "\n",
            "Step      Train loss                                                                                    Test loss                                                                                     Test metric\n",
            "0         [1.44e+00, 2.34e+00, 1.16e-01, 6.40e+01, 4.90e+01, 7.29e+02, 3.81e+01, 3.28e+01, 2.81e+02]    [1.44e+00, 2.34e+00, 1.16e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "1000      [4.45e+00, 3.29e+00, 3.28e+00, 3.49e+01, 2.19e-02, 1.99e+00, 3.34e+01, 6.31e+00, 1.01e+01]    [4.45e+00, 3.29e+00, 3.28e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "2000      [9.64e+00, 1.88e+00, 1.18e+00, 1.67e+01, 2.80e-01, 1.44e+00, 3.23e+01, 1.47e+01, 4.30e+00]    [9.64e+00, 1.88e+00, 1.18e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "3000      [8.93e+00, 1.92e+00, 9.23e-01, 1.35e+01, 3.46e-01, 1.29e+00, 3.22e+01, 1.74e+01, 2.76e+00]    [8.93e+00, 1.92e+00, 9.23e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "4000      [8.53e+00, 2.01e+00, 7.73e-01, 1.14e+01, 3.53e-01, 1.18e+00, 3.19e+01, 1.87e+01, 2.10e+00]    [8.53e+00, 2.01e+00, 7.73e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "5000      [8.19e+00, 2.11e+00, 5.87e-01, 9.66e+00, 3.38e-01, 1.08e+00, 3.16e+01, 1.93e+01, 1.82e+00]    [8.19e+00, 2.11e+00, 5.87e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "6000      [7.72e+00, 2.27e+00, 4.31e-01, 7.77e+00, 3.26e-01, 9.86e-01, 3.11e+01, 2.00e+01, 1.71e+00]    [7.72e+00, 2.27e+00, 4.31e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "7000      [7.22e+00, 2.59e+00, 3.25e-01, 6.45e+00, 3.09e-01, 8.86e-01, 3.06e+01, 1.99e+01, 1.72e+00]    [7.22e+00, 2.59e+00, 3.25e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "8000      [6.23e+00, 3.48e+00, 2.81e-01, 5.17e+00, 3.00e-01, 7.48e-01, 2.88e+01, 1.97e+01, 2.19e+00]    [6.23e+00, 3.48e+00, 2.81e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "9000      [9.02e-01, 1.84e+00, 4.89e-01, 1.73e+00, 2.89e-01, 7.30e-02, 5.94e+00, 5.70e+00, 1.12e+01]    [9.02e-01, 1.84e+00, 4.89e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "10000     [3.80e-01, 8.15e-01, 3.17e-01, 8.11e-01, 1.11e-01, 5.69e-05, 2.53e+00, 2.40e+00, 7.56e+00]    [3.80e-01, 8.15e-01, 3.17e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "11000     [2.07e-01, 4.90e-01, 2.31e-01, 4.28e-01, 4.04e-02, 9.30e-03, 1.44e+00, 1.43e+00, 4.80e+00]    [2.07e-01, 4.90e-01, 2.31e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "12000     [1.38e-01, 3.28e-01, 1.68e-01, 2.33e-01, 2.33e-02, 1.21e-02, 9.82e-01, 1.00e+00, 2.87e+00]    [1.38e-01, 3.28e-01, 1.68e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "13000     [9.07e-02, 2.27e-01, 1.29e-01, 1.39e-01, 1.05e-02, 1.46e-02, 6.32e-01, 6.13e-01, 1.43e+00]    [9.07e-02, 2.27e-01, 1.29e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "14000     [6.17e-02, 1.64e-01, 1.06e-01, 7.34e-02, 5.01e-03, 1.04e-02, 4.08e-01, 3.85e-01, 6.91e-01]    [6.17e-02, 1.64e-01, 1.06e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "15000     [5.15e-02, 1.25e-01, 7.39e-02, 3.66e-02, 2.79e-03, 5.91e-03, 2.59e-01, 2.45e-01, 3.67e-01]    [5.15e-02, 1.25e-01, 7.39e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "16000     [3.83e-02, 1.04e-01, 5.25e-02, 1.61e-02, 1.48e-03, 2.80e-03, 1.47e-01, 1.37e-01, 1.99e-01]    [3.83e-02, 1.04e-01, 5.25e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "17000     [2.44e-02, 6.08e-02, 3.88e-02, 6.10e-03, 9.27e-04, 1.16e-03, 6.68e-02, 6.02e-02, 8.88e-02]    [2.44e-02, 6.08e-02, 3.88e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "18000     [2.14e-02, 3.89e-02, 2.13e-02, 2.05e-03, 5.62e-04, 4.54e-04, 2.85e-02, 2.59e-02, 3.89e-02]    [2.14e-02, 3.89e-02, 2.13e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "19000     [1.36e-02, 2.86e-02, 1.50e-02, 7.10e-04, 2.31e-04, 5.81e-05, 1.28e-02, 1.23e-02, 1.95e-02]    [1.36e-02, 2.86e-02, 1.50e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "20000     [1.17e-02, 2.35e-02, 1.31e-02, 3.05e-04, 2.08e-04, 3.56e-06, 6.54e-03, 6.68e-03, 1.13e-02]    [1.17e-02, 2.35e-02, 1.31e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "21000     [7.95e-03, 2.05e-02, 1.08e-02, 1.41e-04, 7.52e-05, 6.00e-06, 3.94e-03, 4.20e-03, 7.33e-03]    [7.95e-03, 2.05e-02, 1.08e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "22000     [6.56e-03, 1.80e-02, 9.78e-03, 3.29e-05, 4.60e-05, 5.79e-07, 2.68e-03, 2.82e-03, 5.09e-03]    [6.56e-03, 1.80e-02, 9.78e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "23000     [7.47e-03, 1.54e-02, 8.84e-03, 1.75e-05, 1.46e-05, 3.37e-06, 1.88e-03, 1.99e-03, 3.69e-03]    [7.47e-03, 1.54e-02, 8.84e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "24000     [4.90e-03, 1.28e-02, 6.92e-03, 3.00e-05, 3.11e-05, 3.39e-06, 1.33e-03, 1.46e-03, 2.79e-03]    [4.90e-03, 1.28e-02, 6.92e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "25000     [8.84e-03, 1.15e-02, 8.01e-03, 1.19e-06, 1.84e-06, 1.39e-06, 1.09e-03, 1.14e-03, 2.16e-03]    [8.84e-03, 1.15e-02, 8.01e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "26000     [3.87e-03, 9.42e-03, 5.26e-03, 1.46e-05, 2.17e-05, 1.15e-06, 7.95e-04, 8.70e-04, 1.70e-03]    [3.87e-03, 9.42e-03, 5.26e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "27000     [3.77e-03, 8.30e-03, 4.74e-03, 7.60e-06, 2.92e-05, 2.63e-08, 6.33e-04, 6.84e-04, 1.35e-03]    [3.77e-03, 8.30e-03, 4.74e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "28000     [5.31e-03, 8.45e-03, 6.00e-03, 1.02e-06, 4.96e-05, 1.26e-05, 5.29e-04, 5.53e-04, 1.10e-03]    [5.31e-03, 8.45e-03, 6.00e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "29000     [3.48e-03, 6.56e-03, 3.84e-03, 4.71e-06, 2.53e-05, 3.68e-07, 4.16e-04, 4.46e-04, 9.00e-04]    [3.48e-03, 6.56e-03, 3.84e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "30000     [2.85e-03, 5.81e-03, 3.38e-03, 3.13e-06, 1.64e-05, 1.98e-07, 3.42e-04, 3.69e-04, 7.46e-04]    [2.85e-03, 5.81e-03, 3.38e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "31000     [3.30e-03, 5.22e-03, 3.42e-03, 1.40e-05, 2.27e-05, 1.81e-07, 2.83e-04, 3.08e-04, 6.35e-04]    [3.30e-03, 5.22e-03, 3.42e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "32000     [8.02e-03, 6.55e-03, 1.15e-02, 8.61e-05, 4.28e-05, 7.30e-06, 2.77e-04, 2.70e-04, 5.89e-04]    [8.02e-03, 6.55e-03, 1.15e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "33000     [2.26e-02, 8.26e-03, 6.42e-03, 8.66e-05, 4.94e-05, 1.01e-04, 2.10e-04, 3.38e-04, 5.97e-04]    [2.26e-02, 8.26e-03, 6.42e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "34000     [2.23e-03, 4.02e-03, 2.29e-03, 2.80e-06, 3.67e-06, 1.59e-07, 1.79e-04, 1.96e-04, 3.96e-04]    [2.23e-03, 4.02e-03, 2.29e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "35000     [2.19e-03, 3.75e-03, 2.08e-03, 6.40e-06, 2.60e-06, 1.15e-06, 1.54e-04, 1.74e-04, 3.50e-04]    [2.19e-03, 3.75e-03, 2.08e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "36000     [5.34e-03, 5.76e-03, 5.58e-03, 2.60e-05, 4.20e-05, 3.89e-05, 1.59e-04, 1.65e-04, 3.49e-04]    [5.34e-03, 5.76e-03, 5.58e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "37000     [3.57e-02, 2.01e-02, 2.85e-02, 2.01e-04, 2.07e-04, 2.77e-04, 1.94e-04, 3.36e-04, 6.86e-04]    [3.57e-02, 2.01e-02, 2.85e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "38000     [1.77e-03, 3.05e-03, 1.67e-03, 1.85e-06, 2.57e-06, 2.10e-08, 1.07e-04, 1.19e-04, 2.36e-04]    [1.77e-03, 3.05e-03, 1.67e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "39000     [4.02e-03, 4.10e-03, 3.33e-03, 3.45e-05, 8.49e-07, 2.63e-05, 9.09e-05, 1.32e-04, 2.55e-04]    [4.02e-03, 4.10e-03, 3.33e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "40000     [1.68e-03, 2.79e-03, 1.59e-03, 1.53e-07, 8.14e-06, 1.20e-06, 8.77e-05, 9.43e-05, 1.90e-04]    [1.68e-03, 2.79e-03, 1.59e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "41000     [1.89e-03, 2.61e-03, 1.40e-03, 4.60e-06, 1.20e-07, 2.24e-06, 7.79e-05, 9.05e-05, 1.74e-04]    [1.89e-03, 2.61e-03, 1.40e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "42000     [4.83e-02, 5.48e-03, 1.75e-02, 2.48e-05, 1.27e-04, 2.81e-06, 3.14e-04, 1.32e-04, 1.81e-04]    [4.83e-02, 5.48e-03, 1.75e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "43000     [1.47e-03, 2.42e-03, 1.40e-03, 7.33e-06, 1.38e-06, 2.13e-06, 6.37e-05, 7.70e-05, 1.45e-04]    [1.47e-03, 2.42e-03, 1.40e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "44000     [1.63e-03, 2.40e-03, 1.40e-03, 5.10e-07, 1.17e-05, 3.51e-06, 6.28e-05, 6.74e-05, 1.31e-04]    [1.63e-03, 2.40e-03, 1.40e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "45000     [1.20e-03, 2.15e-03, 1.13e-03, 7.45e-07, 3.85e-06, 1.48e-07, 5.51e-05, 6.19e-05, 1.16e-04]    [1.20e-03, 2.15e-03, 1.13e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "46000     [1.57e-01, 2.80e-02, 2.63e-02, 1.16e-04, 6.47e-04, 4.20e-04, 2.56e-04, 6.07e-04, 8.38e-04]    [1.57e-01, 2.80e-02, 2.63e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "47000     [1.15e-03, 2.00e-03, 1.04e-03, 1.46e-06, 4.95e-06, 1.67e-07, 4.76e-05, 5.31e-05, 9.72e-05]    [1.15e-03, 2.00e-03, 1.04e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "48000     [1.09e-03, 1.93e-03, 1.11e-03, 3.96e-06, 3.43e-06, 1.91e-07, 4.59e-05, 5.21e-05, 9.21e-05]    [1.09e-03, 1.93e-03, 1.11e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "49000     [1.21e-03, 1.87e-03, 9.67e-04, 2.92e-06, 2.45e-07, 9.02e-07, 4.08e-05, 5.10e-05, 8.81e-05]    [1.21e-03, 1.87e-03, 9.67e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "50000     [9.29e-02, 3.07e-02, 4.06e-02, 3.08e-04, 4.94e-04, 5.24e-04, 1.47e-04, 5.01e-04, 8.50e-04]    [9.29e-02, 3.07e-02, 4.06e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "51000     [9.29e-04, 1.74e-03, 9.29e-04, 3.80e-07, 1.42e-06, 5.50e-08, 3.70e-05, 4.40e-05, 7.52e-05]    [9.29e-04, 1.74e-03, 9.29e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "52000     [4.40e-02, 1.68e-02, 2.26e-02, 2.33e-04, 1.61e-04, 2.77e-04, 5.44e-05, 3.26e-04, 5.10e-04]    [4.40e-02, 1.68e-02, 2.26e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "53000     [8.63e-03, 1.98e-03, 2.85e-03, 6.17e-07, 7.41e-05, 1.37e-05, 8.30e-05, 4.53e-05, 6.43e-05]    [8.63e-03, 1.98e-03, 2.85e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "54000     [1.20e-03, 1.64e-03, 1.21e-03, 5.22e-06, 7.89e-06, 3.86e-08, 3.90e-05, 3.90e-05, 6.26e-05]    [1.20e-03, 1.64e-03, 1.21e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "55000     [8.97e-04, 1.59e-03, 8.64e-04, 2.06e-08, 4.45e-06, 9.65e-07, 3.18e-05, 3.59e-05, 5.91e-05]    [8.97e-04, 1.59e-03, 8.64e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "56000     [8.40e-04, 1.55e-03, 8.60e-04, 4.99e-06, 5.60e-07, 1.50e-06, 2.93e-05, 3.78e-05, 5.84e-05]    [8.40e-04, 1.55e-03, 8.60e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "57000     [1.48e-02, 1.09e-02, 1.62e-02, 5.58e-04, 1.46e-04, 4.52e-04, 1.37e-04, 1.29e-04, 3.01e-04]    [1.48e-02, 1.09e-02, 1.62e-02, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "58000     [1.17e-03, 1.48e-03, 8.34e-04, 1.04e-06, 3.82e-10, 1.13e-06, 2.58e-05, 3.47e-05, 5.29e-05]    [1.17e-03, 1.48e-03, 8.34e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "59000     [1.92e-03, 2.10e-03, 2.01e-03, 5.21e-06, 1.21e-05, 1.06e-05, 2.99e-05, 3.69e-05, 6.60e-05]    [1.92e-03, 2.10e-03, 2.01e-03, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "60000     [9.29e-04, 1.40e-03, 7.73e-04, 1.56e-07, 1.15e-07, 1.58e-08, 2.40e-05, 3.26e-05, 4.74e-05]    [9.29e-04, 1.40e-03, 7.73e-04, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00]    []  \n",
            "\n",
            "Best model at step 60000:\n",
            "  train loss: 3.21e-03\n",
            "  test loss: 3.11e-03\n",
            "  test metric: []\n",
            "\n",
            "'train' took 239.012404 s\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eWm5PVlcCz9n",
        "colab_type": "text"
      },
      "source": [
        " Plot identified parameters"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "hyPBX9r_C0aE",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 279
        },
        "outputId": "a7fda507-497a-4ea1-b4d2-dee4489f31a2"
      },
      "source": [
        "# reopen saved data using callbacks in fnamevar \n",
        "lines = open(fnamevar, \"r\").readlines()\n",
        "\n",
        "# read output data in fnamevar (this line is a long story...)\n",
        "Chat = np.array([np.fromstring(min(re.findall(re.escape('[')+\"(.*?)\"+re.escape(']'),line), key=len), sep=',') for line in lines])\n",
        "\n",
        "l,c = Chat.shape\n",
        "\n",
        "plt.plot(range(l),Chat[:,0],'r-')\n",
        "plt.plot(range(l),Chat[:,1],'k-')\n",
        "plt.plot(range(l),Chat[:,2],'g-')\n",
        "plt.plot(range(l),np.ones(Chat[:,0].shape)*C1true,'r--')\n",
        "plt.plot(range(l),np.ones(Chat[:,1].shape)*C2true,'k--')\n",
        "plt.plot(range(l),np.ones(Chat[:,2].shape)*C3true,'g--')\n",
        "plt.legend(['C1hat','C2hat','C3hat','True C1','True C2','True C3'],loc = \"right\")\n",
        "plt.xlabel('Epoch')\n",
        "plt.show()"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2l75q3hu7SSi",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 346
        },
        "outputId": "289bdd39-19f6-4281-f8e7-dd99a05460a4"
      },
      "source": [
        "yhat = model.predict(observe_t)\n",
        "\n",
        "plt.plot(observe_t, ob_y,'-',observe_t, yhat,'--')\n",
        "plt.xlabel('Time')\n",
        "plt.legend(['x','y','z','xh','yh','zh'])\n",
        "plt.title('Training data')\n",
        "plt.show()"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Predicting...\n",
            "'predict' took 0.018274 s\n",
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEWCAYAAAB7QRxFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hUVf7H8feZySST3hPSQwm9E3pvggoIiEoXQQFde18LuD9dV7G7qNhWRAQrUgWkSu+9hlBCAum9TJ/z+4OogLRAJpMJ5/U8PpnMLed7Y/jkzLnn3iuklCiKoiiuS+PsAhRFUZQbo4JcURTFxakgVxRFcXEqyBVFUVycCnJFURQXp4JcURTFxakgV1yaEGKpEOLeyl73RgkhpBCiXlW0pShCzSNXqpoQouS8b70AE2Ar/36SlPLbqq+qcgkhJJAgpUy+ynrxwElAJ6W0VkFpSg3k5uwClJuPlNLnj9dCiFPA/VLKlRevJ4RwU+GmKFenhlaUakMI0UMIkSaEeE4IkQF8JYQIFEIsFkJkCyHyy19Hn7fNWiHE/eWvxwkhNggh3i5f96QQ4tbrXLe2EGKdEKJYCLFSCPGREGL2FWp/RgiRLoQ4K4QYf9Gy24UQu4UQRUKIVCHEK+ctXlf+tUAIUSKE6CiEqCuEWC2EyBVC5AghvhVCBNzIz1ap2VSQK9VNLSAIiAMmcu539Kvy72MBAzD9Ctu3B44CIcA04EshhLiOdecA24Bg4BVgzOUaFEL0B54G+gIJQJ+LVikFxgIBwO3Ag0KIweXLupV/DZBS+kgpNwMC+A8QCTQCYsprUJRLUkGuVDd2YKqU0iSlNEgpc6WUP0spy6SUxcC/ge5X2D5FSvm5lNIGfA1EAOEVWVcIEQu0BaZIKc1Syg3Awiu0eTfwlZTygJSylItCV0q5Vkq5X0ppl1LuA+Ze6RiklMlSyhXlP4Ns4N2rHLNyk1NBrlQ32VJK4x/fCCG8hBCfCiFShBBFnBuKCBBCaC+zfcYfL6SUZeUvfSq4biSQd957AKlXqDnyouUp5y8UQrQXQqwpHx4qBCZz7lPAJQkhwoUQ3wkhzpQf8+wrra8oKsiV6ubiaVRPAQ2A9lJKP/4airjccEllSAeChBBe570Xc5X1z18ee9HyOZzr0cdIKf2BGfxV/6Wmjb1e/n6z8mMejWOPV3FxKsiV6s6Xc+PiBUKIIGCqoxuUUqYAO4BXhBDuQoiOwMArbPIDME4I0bg8/C+u0ZdzPXyjEKIdMPK8ZdmcG06qc9H6JUChECIKeObGjkip6VSQK9Xd+4AnkANsAZZVUbujgI5ALvAa8D3n5rv/jZRyKefqXA0kl38930PA/wkhioEpnAv+P7Yt49y4/0YhRIEQogPwL6A1UAgsAeZV3mEpNZG6IEhRroEQ4nvgiJTS4Z8IFKWiVI9cUS5BCNG2fD63pnx64R3AfGfXpSiXoq7sVJRLq8W5IY1gIA14UEq527klKcqlqaEVRVEUF6eGVhRFUVycU4ZWQkJCZHx8vDOaVhRFcVk7d+7MkVKGXvy+U4I8Pj6eHTt2OKNpRVEUlyWESLnU+2poRVEUxcWpIFcURXFxKsgVRVFcnJpHrihKjWSxWEhLS8NoNF595WpGr9cTHR2NTqe7pvVVkCuKUiOlpaXh6+tLfHw8l3+2SPUjpSQ3N5e0tDRq1659TduooRVFUWoko9FIcHCwS4U4gBCC4ODgCn2SUEGuKEqN5Woh/oeK1u1SQb4ubR1f7P/C2WUoiqJUKy4V5FtWzOf4Rz9it9mcXYqiKEq14VJBHqwNICRfx6mzSc4uRVEUpdpwqSCPjKkHQPLJfU6uRFEU5cq2b99O8+bNMRqNlJaW0qRJEw4cOOCQtlxq+mG92s04BJxJTXZ2KYqiuJB/LTrIobNFlbrPxpF+TB3Y5LLL27Zty6BBg3jppZcwGAyMHj2apk2bVmoNf3CpIK8T0wibRpKXnubsUhRFUa5qypQptG3bFr1ez4cffuiwdlwqyLVaN/KiNGi1pc4uRVEUF3KlnrMj5ebmUlJSgsViwWg04u3t7ZB2XGqMHMBwWx0O1C50dhmKoihXNWnSJF599VVGjRrFc88957B2XKpHDhDnF8f6tPVYbBZ02mu7D4GiKEpVmzVrFjqdjpEjR2Kz2ejUqROrV6+mV69eld7WNffIhRAxQog1QohDQoiDQojHyt9/RQhxRgixp/y/2yq9yvNE5Xkx7Ldw9hza6MhmFEVRbsjYsWP5+eefAdBqtWzdutUhIQ4VG1qxAk9JKRsDHYB/CCEaly97T0rZsvy/Xyu9yvM0jm+Fh0XLoYNbHNmMoiiKy7jmIJdSpkspd5W/LgYOA1GOKuxyGtdtg8XNTnqyuihIURQFrvNkpxAiHmgFbC1/62EhxD4hxP+EEIGVVNslabVumEP1mM7mOLIZRVEUl1HhIBdC+AA/A49LKYuAT4C6QEsgHXjnMttNFELsEELsyM7OvoGSwTsmAs88GwajmoaoKIpSoSAXQug4F+LfSinnAUgpM6WUNimlHfgcaHepbaWUn0kpE6WUiaGhoTdUdJ1WiRyqXcThzIM3tB9FUZSaoCKzVgTwJXBYSvnuee9HnLfaEMAxNxM4T/t2/djZsIAkwwlHN6UoilLtVWQeeWdgDLBfCLGn/L0XgBFCiJaABE4Bkyq1wkuI8I4gRBfEoeM7oeFwRzenKIpSrV1zkEspNwCXemyFQ6cbXooQgp67QqHoMNxe1a0riqJULy53if4f/GKj8SyUFBbnObsURVGUv5kyZQrvv//+n9+/+OKLfPDBBw5py+Uu0f9D7frNSN6YzI79a+ndaaizy1EUpTpb+jxk7K/cfdZqBre+cdnF48ePZ+jQoTz++OPY7Xa+++47tm3bVrk1lHPZHnmrFt0BOHZ4l5MrURRF+bv4+HiCg4PZvXs3v/32G61atSI4ONghbblsjzw2oh5GT4nhpJq5oijKVVyh5+xI999/PzNnziQjI4Px48c7rB2X7ZEDFHeL4EC8uqWtoijV05AhQ1i2bBnbt2+nX79+DmvHZXvkAPXadmDJrg8oNBXi7+Hv7HIURVEu4O7uTs+ePQkICECr1TqsHZfukTfwTSA2w5OdRzY4uxRFUZS/sdvtbNmyhQkTJji0HZcO8vq+9ei1K4xDm393dimKoigXOHToEPXq1aN3794kJCQ4tC2XHloJD46izEdSlnLa2aUoiqJcoHHjxpw4UTWTMVy6Rw6gqeWPyCh2dhmKoihO4/JBHlQ7Hs8yQWqmmoaoKMrNyeWDvH6jNgDs3qfGyRVFuTm5fJC3bdmbX7qnkxpS5uxSFEVRnMLlg9zPO4DQqFgO5qqHTCiKcnNy+SAHaGGIRaxOxm63O7sURVGUKlcjgjzaFEid4+6cSDvs7FIURVEAmDFjBi1btqRly5bUrl2bnj17Oqwtl55H/ocGjduy7dcd7Nm3jnqxTZxdjqIo1cyb297kSN6RSt1nw6CGPNfuucsunzx5MpMnT8ZisdCrVy+efPLJSm3/fDWiR96maXfMOjuH1q9xdimKoigXeOyxx+jVqxcDBw50WBs1okfu5emDd/uGWDYksW3fato17+XskhRFqUau1HN2pJkzZ5KSksL06dMd2k6N6JEDjBj9NPn+Vn7Z94OzS1EURWHnzp28/fbbzJ49G43GsVF7zXsXQsQIIdYIIQ4JIQ4KIR4rfz9ICLFCCHGs/Gug48q9vNDASMIm38YS2yaOFxx3RgmKoih/mj59Onl5efTs2ZOWLVty//33O6ytivyZsAJPSSkbAx2AfwghGgPPA6uklAnAqvLvnWJM4zF4Cz0zF7/rrBIURVEA+Oqrrzh79ix79uxhz549fPHFFw5r65qDXEqZLqXcVf66GDgMRAF3AF+Xr/Y1MLiyi7xWgfpAhuW2xW/xKQ4e3+msMhRFUarUdQ3cCCHigVbAViBcSplevigDCL/MNhOFEDuEEDuys7Ovp9lrctfwJ5ACFnz7ocPaUBRFqU4qHORCCB/gZ+BxKWXR+cuklBKQl9pOSvmZlDJRSpkYGhp6XcVei9iIetA8ErdDOSSl7HdYO4qiKNVFhYJcCKHjXIh/K6WcV/52phAionx5BJBVuSVW3J2jHgdg3rfvO7kSRVEUx6vIrBUBfAkcllKefzZxIXBv+et7gQWVV971qRvbBHuTMHLTTpNRnH71DRRFUVxYRXrknYExQC8hxJ7y/24D3gD6CiGOAX3Kv3e6kQ9PZWX7HGYe/vrqKyuKoriwisxa2SClFFLK5lLKluX//SqlzJVS9pZSJkgp+0gp8xxZ8LWKDYxnQL0BLNo/j9OZal65oijOt3btWgYMGFDp+60xV3Zeytg6IxmwJoSvXn6M5NPqfuWKotRMNTrIEyIakfjAODxKJd9NeYYdB9Tj4BRFqRrbt2+nefPmGI1GSktLadKkCQcOHKCkpIRhw4bRsGFDRo0axbnJfjemRtw060r6dr+bwMAwlr/zFiveeJOCB3Po0/lOZ5elKEoVSxkz9m/v+d7an6CRI7EbDKROnPS35f5DhhAwdAjW/HzOPPrYBcvivpl1xfbatm3LoEGDeOmllzAYDIwePZqmTZvy4osvcvDgQSIjI+ncuTMbN26kS5cuN3RsNbpH/ofE5j245//exKrXsPDHj1l2apmzS1IU5SYwZcoUVqxYwY4dO3j22WcBaNeuHdHR0Wg0Glq2bMmpU6duuJ0a3yP/Q724pkx8YwbPbX6BZ39/luzCDMa0GOfsshRFqSJX6kFrPD2vuNwtMPCqPfBLyc3NpaSkBIvFgtFoBMDDw+PP5VqtFqvVWuH9Xuym6JH/ITwkmhm3fkbvWj04PH0O77z3D2x2m7PLUhSlhpo0aRKvvvoqo0aN4rnnHHdP9JsqyAH0bnqm9Xob/9ho2JLCG/+6F6PJ4OyyFEWpYWbNmoVOp2PkyJE8//zzbN++3WEPiBeVcca0ohITE+WOHTuqvN3z2e12PvrkGczrjlIS5cEjU2cQ5O+4e8AoilK1Dh8+TKNGjZxdxnW7VP1CiJ1SysSL173peuR/0Gg0PPKPdwgd0hWvs0be+vcEssqcfpsYRVGUCrtpg/wPY4c/R+OJw9mSkM2oX0eppwspiuJybvogB7i91xg+GvolVpuV916fxMoNPzm7JEVRlGumgrxc4+DGfNHtE8Lz9Oz66Cu+X/BfZ5ekKIpyTVSQn6duREMmvvkphhAdaXOWM+OLFyvl8llFURRHUkF+kfDgKJ6e9g2GOj6UrtjL2+8+iF06ZsqQoihKZVBBfgnenr48/+o32NpFs0yzg2nbp6meuaIoN8xRt7G9aS7Rryg3Nx3PPPkJcvs0Zh+ejUeGkccGTEGjUX/7LpaZf4YvP5uCtNlokNiJPp2HEeAd5OyyFOWmoYL8CoQQPNv2WSwns7B/u4OPTj/NIw+/e/UNbyIrt/7Cpk8/x7NUIDWQsnchdx79gvj6zejs04YOUR1pFNeSc08KVJSbx5QpUwgKCuLxx889Q/jFF18kLCzsz9vYHjhwgDZt2jB79uwb/vehgvwqhBD8c9ibvHH4PlifxCfu/+TBif9xdllOZ7Fb+GjndIo+Xo5W40aXp/5Bq2bd2bBlERrfs6w/u54tK74nP/VXfgiQeDeIpXn7XvRoNxAPnd7Z5Ss3oV/e2fW39+q1CaNZj2gsZhuL/7v3b8sbdoygUacIDCVmln164IJlQ55qfcX2xo8fz9ChQ3n88cex2+189913TJs2jd27d1f6bWxVkF8DrdaNZ176gjenjoNV+/nS/V9MGDfV2WU5TfKZQ0zd/Rr7cvczbHA/Hur5LIEBYQD06XkPfYAneIIjjXay4fcFGPYfhG2nObD1azb4fUnJyEZ0i+5Gp/AOhPtFOPdgXEBWYTobMjaz9sxaStYeINoUSOt+A7m9+yh0Wp2zy1MuIz4+nuDgYHbv3k1mZiatWrUiODj4z9vYAn/exrbKglwI8T9gAJAlpWxa/t4rwANAdvlqL0gpf72hiqopdzcPnpnyP6ZNuReWbueHhK+4u/N9zi6ryv247FOSvl2Aex0jb417i/61+1923YYJbWiY0AaA/MJs1q6bx+HMA2zK2cfKlJUMWxOF9PWgUb9buGfgP6rqEFxCUtpB1qz9kTN79uJ9xsSyDploIwPp3LgZnouTOf7pT/x77g+EdmrJsMH/IDwwytklV3tX6kHr3LVXXO7p437VHvil3H///cycOZOMjAzGjx8POOY2thXpkc8EpgMX35T3PSnl2zdciQvQe3jy9L/+x4vfPMis4+/jFxVB//jLB1lNUlxWyH8/fAKP3VnIQDeeHvkGTWq3u+btA/1DGTJwEkOAf0rJ4ayDrCr+HwX7jpE2eyn/2beDR574AB8vP8cdRDVml3YO5hxk9YFfyftpA745dgQCvRe4t4xnWt/nSGzUDSEExsGlLFzyJUmrV2Ncto93t47DbXQ7RjQcQdOQps4+lGrLLu0Um4spKslHY7Di5uGB3tMbb08/3LSOGZwYMmQIU6ZMwWKxMGfOHNavX++Qdq65einlOiFEvEOqcCFeeh/+Pe5THlz5IO/On4qhfipDbnvA2WU51I7D61n8wZv45oOmdQxPPfY2nnrv696fEILG4U1p/Mi7mMwGPvrwady3p/DOk6MYPuU/NIi8OcLIaDGwZst89m5eTZIthe2R6ejsWgZrauPTvT6duw+maeMOfzsRptd7c/edj8Kdj7Jj92pWJC9jfspKlh5ZxIBDdWjYrQdDbp2Ip4eXk46s+pBSUmosprgwnzKMGN2s6IQbvlYN0mTEUGSkTORidwONnxdenj546bzQaSpnyMrd3Z2ePXsSEBCAVqutlH1eSoVuY1se5IsvGloZBxQBO4CnpJT5l9l2IjARIDY2tk1KSsoNlO18xaZi3npuND4ZVppMuIfb+/79eYCuTkrJnCNzmLniQ3rsDKHV6Hu4zUHHuei3maxYMYctLQqY0mkKA+pU/lzb6mLttkWsX/Id2hP5eJg12ITE0DiA1qOG0zWqKwH6gArvs8Rcwk8bvuLMN8vRl4FBb8e7TQKD73yQ2lENHXAU1VtazinOnkwnKiwEbfnIhd3LDb/gULx13gghsFjMlJYWYjKWYTNZKPa0YNXY8TBr8LK4IdzdcNd74u3lh4e753XNLLHb7bRu3Zoff/yRhISECm1bkdvY3miQhwM5gAReBSKklOOvtp/qcD/yypCdn87HL0zEs8BO0wnDua3PGGeXVGky887w3vcvssRrJ92juzO17cuE+oU7tM2M0gyeW/ccSaf2MqigNY889h4+Xv4ObbMqWewWPtnzCae+XEBooR5RJ5iG7brQu/td+PoGVkobVpuF5avnsGv5YrxSDdiFJGtUHe5uO5bE8MQaPQ3UaDWyNnUt84/Px/uXZO6+52ViYyNx8/bCPyAEd53HFbe3SztGq5HSkkIsJWUIix1RHo92DdiC9XjpvPDU6NG7e6IRV76m5NChQwwYMIAhQ4bwzjvvVPh4qizIr3XZxWpKkAOczUnh85cfxjPfTqP7hjGwn+ufAF25eR6bP/sCvUEQ9shAxnaaVGUBYLVb+e/Mf2JffpjSAMHgJ1+keYMOVdK2Ix0+sZs3dr7JrrKD3Bk5kMfaPUmgf4hD2zxyfDdLVs1inu82isxF9Dpdm9b1OjFi2BNXDTVXIaVk0/6VrF/2A+bDaSzseJaAwFAGeHSjZ9xAmje//msYpLRTZiihrKwEi8VEsYcZq92Kb5kbOqsG9G74BQTj7aDzOlXZI4+QUqaXv34CaC+lHH61/dSkIAfIzD3DjJcfJMuzhLsfn0r3mO7OLum6zfh6CsVLd2LyEvR+6GE6JjrnZO7ilV+z7+vv0dgg5s4+jLrzSafUcaOklHw7711S560iO9RK/8ef5pb4W6q0BoPVwNLjv7Lvw6/xzbFT5gdNhwzijv73u+yVyqnZJ1m4+HOytu3DLw/sQmKN86P9yNF0b9YfrUZb6U8IklJisVsoLs7HXFYKRhtCgl0n8PT3J8AvpFI7PA4JciHEXKAHEAJkAlPLv2/JuaGVU8CkP4L9SmpakANkF2Tw6LrHOVJ4lGmd3qRv3ar9x3qjpJR8+OnTWNccxRjnzUMvfuTwHuPVnEg9xOxpL+CdZcXQJ56n73sbvZvrXEyUU5DBjHeexDOpiNIwN0Y+9Sr14ps5rR673c4vyz7n4C+L8C6C0jA3ej/wEJ2bu8bvqpSSTac38M2xb9mfvI2hayIxBGqJ6tCG228fT1ho9AXrO/pRbxarmfz8LKylBow6G1YvDUEeQfjr/NDp3G94/w7rkVeWmhjkAMXmYh5ZNImYX3NpcvutDB/6uLNLuiZSSt7a8RYbV8yjgzGBp176Anf36vHR22wx8dGXzzNLt4raofV4u+tb1Ams6+yyrmrdnqX8/sF09Abw7NqISRNfr5R/3JXBZDHy7Q9vk7ZyE7+2P0unhr14pMXD1A6s4+zSLslmt7F49Sx2LZpPgb2Y/V1haMJQevp0oEnC3zLtT1X1zE67tFNsKibPlIe1zIivwQ2pd8MvIARvL9/r3q8KcicqKM7l/Zcn4JNuIeLOnoy6+2lnl3RFVquF15e8yI8FSxnVaBTPJD6DVuO4aVLXa8OZDby05p90Wu9Fkz59GXVX9fy5WuwWZuydwde7vqT/nij6jX6Qru2r5wycElMJ3xz+hq8OfkWXzb6Eh8cxYsI/iY2s2OwKR7FaLfy09FOO/Loc3zyJSS8J79GWUWOev6ZPZs54+HKpoZii/BwwWv8advHzJ8C/4sMuKsidrKi0gPdeHo/PGTOhd3Rh7MjnnV3SJZmsRt569X7ck/LxGN+FR/s8X61nNZxKP8bXbzyDT4YVc4MgRj84lZiI6tM7P3xiN19/9SpL6xxjYMId/LP9P/HWXf98+6qSVZzBVx+9hNiTjtSAvn09xo572WlDaxabhYXHF7Li5/+RsEdg8IG4vt24a8gj6D08r3k/zgjyP5gtJvILsrGVGpBIyvwFQfog4kLjKCkpuaZ9qCCvBorLCnl3ynh8Uk0ED+vKuLuec3ZJFygzlfD2KxPwPlGKvlsjHnpoWrUO8T+YrSamf/wMtk3HsQtwT4xn3OT/I9A72Gk12e125s57j9RfViGBhg8OZ0gX17uu4NDxnfz81dt4HSvG7C6JGnsrI3pPqrSLY66muKyAuT+8y+riLRz0S6e5TyOGaLszeMBE3NwqXoMzg/wPdrudIkMBedYCjGYDbePbkZGfga/71YdcVJBXE2WmEv7z1gMsDTvE093+yfCGV53QUyUKS/J5f+r9+KSZ8OvXmgfG/5+zS6qwfce2smDWBxRnZ7GhWxn3Nb2PEfWH46O//jHJ65GTX35C81gRJeFujHzyVRKceEKzMmzYtYzl33/GkoRkooLjeLDuePo3GYTGQVcm5hZkMnfu2xRuPojepCG3gZ4Bk56kY2THG+pcODvIZ8yYwYwZMwAoLCwkJjaGnTt38sijj7B0yVI8PT1ZsGAB4eGXvj5DBXk1YraZeer3p1iXspaHfUYw4c7nnTrlq9hczJTpE4jaWkrY4G6MHVG9PilU1KGsA3y8fwZbj69n0KYoQju2YPTo5/HxdvyFRLuzdvP96y8SnCHQd2vI5In/QedWPU5o3igpJb+n/c7729+j2RIDepsOu587Wl8v9AH++NeJJS4xkTCvMLzKNESGxePl6VOhNvKMeXw969+Yfj+MzqqhNFpPl6Ej6dlpSKV8Orw4CL//19+HOBt06ErLfrdjMRmZ98Yrf1vepHsfmvboQ1lRIYveu/D21fdMfeOa6rBYLPTq1Ytnn32WQYMGsXDhQgYOHMizzz6Ln58fL7300jXVD5cPcnUbWwdz17rzbvd3+b+PJ1K0bBOvb76bex6ZSkLtqu+15RvzmbxyMkkhx5j60OMM7n5vlddQ2RqHNWV67+lsjljN8qSPKF29nw83jqRW7/aMuOepG7onzOWYzEa+2Ps5nx3+gnrNI7ht1MN0a1s9T2heLyEEPWJ60DmiE9/ZP+TUnp3YisuQGQVYTuazLeMQ75d8CxLGLI9FaxeYdRKrlwbh44GmcQSBbRsT6hGK+6kiwsNjiY6oS63QGE6mHeXntAX8dPIXYjPdaBUbR4+7J9ChVV9nH7ZDPPbYY/Tq1YuBAwfi7u7+56Pe2rRpw4oVKyqlDdUjryIWq5kvZ79KwYqdCCkI6t2G++59+brG/q7H6fRkPn3zCTY0zuLV296iW3S3Kmm3qq3Y9BMbv/8G3wwbRi9J02cmMKDhHZU2E+fI8d388O4rpHsUEjikEy+0fwEf94r1RF2dzW4jtzSHPEs+mcUZnNyyhcLcLMry8zEXlkCJkVNRBnZEZ6I3aRi+KubPbe1CgoTtTQpI6NWDCc0mUMffMdMenT20AjBz5kx+/PFHFi1ahEajwcfH58+TnT/99BOLFy9m5syZl9xWDa1UY0dT9jF3+v/he9pIboI7E55+i7oBjp15cSxlP9/93/O4G6D1g+Po2/Uuh7bnbFJKFq/5hlWb5rEq5jj1Auoxzn8IA7qORHuV25WWGUo4lXqE1LPJGKL0pJemk7NlHxzKQBSb8SgDq5uk9l39GD74sSo6ItdksVnILM7gRPI+srJSyc/OoCg/ByEEAwZPpH6cYz+VOjvId+7cyb333sv69esJDDx3Lx1HBbkaWqliDeKaM+XNH5i78ENWZc5j2KJh3J8wjnHNx9/QxQOXsz9pGwte/xduFknHxx6kW/uBld5GdSOEYGCvsdzeczS/pfzG/36fzrE53/OfOT/RbPAgYqMbkHY2GUO0ngxzNnm7DqPddRa3Yivu5r/GZuf2ScXkbqddbgQxeOIWHYBbSDB3DH7A4SFUE+i0OqIDYohOjLn6yjXQ9OnTycvLo2fPngAkJl7+4qUbpXrkTpRnzGPa9mkUzdtCZJEPHceNo3fXYZW2/52H1rPsjf8ggD5PPU27Fr0qbd+uxGI1892i6ZxYsgqf4r+CemHnsxQE2GieV4u6p73QBfjiHRxMUFgk4RFx1G/UhqiAGNy1NeME5s3G2T3yG6WGVlzMkrWz2fnNXPDsbtEAACAASURBVLxLBNYmoUx4+D+EBNW66nYmm4nkUwc4ffoIWRmpFORkUpaXRylG9jYvI7PgLN33hzFm4hSaN+xYBUdSvZksRuYt/xxps1MrMp56dVsQGRCNm0Z9MK2JVJA7mAryvysqLeDTGf+E7aexuEPTCcPp1O5WkpJ2k3r8MHnZZynJzcWUX4jZYuL3jgXkGfPovSOUmKxzT4KRnLuM2RjiTunAOkT5RDGi4QgifSKdfHSKUvVupiBXXZFqws87gGee+oRNu39j6cz/8tqRdzCcmkaHA0E0PH1u7Nyis2Pz1qD119Mrpie1vCMIjNcS5BZAdGQ94iLrq8d7Kcp5pJQuccXyxSrawVZBXs10anULbVv0pNXxRZhtZoJaehGsCyAuugHBvmEu+UupKM6g1+vJzc0lODjYpf7dSCnJzc1Fr7/2WzarIK+GdBodQxOGOrsMRXFp0dHRpKWlkZ2d7exSKkyv1xMdHX31FcupIFcUpUbS6XTUrl3b2WVUCdd8zpOiKIryJxXkiqIoLk4FuaIoiou75iAXQvxPCJElhDhw3ntBQogVQohj5V8DHVOmoiiKcjkV6ZHPBPpf9N7zwCopZQKwqvx7RVEUpQpdc5BLKdcBeRe9fQfwdfnrr4HBlVSXoiiKco1udIw8XEqZXv46A7j0M4sAIcREIcQOIcQOV5zXqSiKUl1V2slOee6a0steVyql/ExKmSilTAwNDa2sZhVFUW56NxrkmUKICIDyr1k3XpKiKIpSETca5AuBPx78eC+w4Ab3pyiKolRQRaYfzgU2Aw2EEGlCiAnAG0BfIcQxoE/594qiKEoVuuZ7rUgpR1xmUe9KqkVRFEW5DjXiyk5LcREb3p5J+ubNzi5FURSlyrn83Q+tpSUseXUeZ4piKUpbT0RoKdTr4+yyFEVRqoxL98htBgNLX/uJM0XRdGmbyS31f4U5w7EfUOdcFUW5ebhukNssrHj9W07nx9KzSz4tJozA7b75mMI78tOMLA7NmefsChVFUaqEawa5zQrzHqCR9Vu6d8ik8ei7zr3vGYBm1Ld4+rixZl0Ae778zrl1KoqiVAGXC3K71Ub6zKlw8BfiBgym6bgLJ9PofPy47ZXh1A09ycbtYWz97zdIu91J1boYKSE7CU5vOfdaURSX4HInOw988yPrt/fknv61COn8yCXX0eo9uWXKWNa+MYsdB2vj8cVsWk4cW8WVugZLYT5nNm7m9N6znD7rw5CA5/HW5nMm4B7cu9xPaGI7Z5eoKMpVuFyQpyQZCPTIJuSOh6+4nkano+cL4/B5+7/UTf0vHAmGhrdXUZXVmN0OmfvJ3b6BDRs8OVsUhR09biKKqMAsTN1exdvfyKZvNWQdKaLhks9pf28vfOLrOrtyRVEuw6WC3G61kl4QRv3YTBDiqusLrZZ2T06CrxYgf5pIyV1L8G3QsgoqrV5MOVmkrt/M6QPZxFhWkaD5FQ9bMGXmf9M8IZPYNrWJ6NAZN70HuRm5bFy3neguEv/9ySSl1yb5jSSa1l9Lq3vvwCs4xNmHoyjKRVwqyHP37sEiPYmsH3ztG+k8Yfgc1v97Bif+e4K7XgjFOzLKcUVWE7bSYvbO+oWTyZLM0kgkvrhrtATUTYTeg/Cp24sRvn/ddTi/1MzX87bR6ZUHCTKXARAAhOiDONRiGHuSWuD52iTcViRRovPCpNNjcddj9fBkT+venG7eic4JIdzdKhIPD52TjroaMJVASSZFqelkp+RRlldCaYGRshI7ZaVwa+SXiNIzJJs6Ya0/hIZ3DUGjc3d21S7FbixFo/d2dhnViksF+dk9x4BwIhObV2xDvwga3zOAw59n8+s7axjy6lDcvLwcUmO1cHIdYv4jnDgxGanzo02TTGLbJhDephsa3YALVs3NyOXXWQt5oySCMosNn66DaN4tEQGYS0owF5fiExGHu91E8Kl8POoUUKhvQxl+yNIs3ExGDGYrhzOKSF23mZi9P2Ab+wA9Jo9E66Z1zvE7ipRwZhfknSD7VD7HjrlRVmyntExLmcmDUosPdwU9jb9bJsmlg9lcfC/gg8COXlOMzlrMJkI57haNZ2Z7cjJC2fbbjwSbdyPrRRLaugUJ3doREuTr7COtPsryKD6ymxM70sg6YyI734cCcyhBHpn06XiKkLadIK4zuHk4u1KnEtIJsxMSExPljh07KrydedHLZO4/QswLP15XuycWLmLpr57Uq5XGLVPGIjQuN2nniixFBez49HtaFr+GZ0gIttuno63b+ZLr5mbksv7Nj4haOR9Pq4lZj3/IhDva0aDWFUJESmTSCn6akU6WIYYovxQ6392E0MR2SCnZOH8VprffJDI3jTPB0egn/4NOowahqQE/5zNr17Jt8Sk6e3xAmO4ESYYurCp8DC+3Irw9jHh5WvH2gTatSvAJD6aYcI4eLubMlj3od24iNuc0AD/3HEvQPXeRkJ+KefFqsu0NKPWIxLs0nXrH5/Fk4mBErQgGlh6naVkG/s2aENeuFXGNaqPVuv7P8UrM+dnk7N1H9rEzZKUZaeS+lGjLas6YmzA/7zW83QoJ8S/CTRgoKvKgr9vreGtyOerWn1RtT6Ia+BLbrT0BcfGIaxh6dUVCiJ1SysS/ve9KQQ6A1XRDf313fTyTzftiadcik7YPXu4+YK4nbc1q1szLocgSQu82B2l47wRw//unjrysPNb9ZzpRK+fjYzFwokEb6j71GA27tb3mtmxmMwfnLmD7Vg+Mdi8aRJyiw7098Ymvi81qY92nc9DO/IzQ4hwO125B9Mcf0652UGUebpXJ2LiBrQuOkVYUh5e2gJ69DMR3a4vdOwyh97ugM2C12th94BTL0kys23WC9+Y+h1baSY2oi+zSncZ3DyKmWYML9i9tdo4tWsb2VUU0M31PdN0TLAwYR+mqE/TYtwpN+bNait29yKwVz7bJU+nbNIIu9ULQaFw3rMz52VhT9+NVuIeylCPM39aDfHMYf8yI9nYrpGP9/TRo40+Ob2PWZodzdslvdFg5F9/yob8/bOp/D9LcHJM9AADf4hQC8w8SmrEWg5s3r939Cnp3N3rvW0H9tCPY3d2x14okvG8vWg3ogd5TX9WHf91qTpDfIGmzsfGNT6hTOpvIe1+BBhc/T9q1mAvy2PTxPA6eroO/ew697o4mskunv61XUGbmi/UnWbBqL/9d/CpnElpUOMAvZsrPZ+fMRew7GsYdIa8R0as/dHsG3DwwG02see9LVh3J5oeIRHrUD+aZ+jqadGlzI4dbdc7s5LdPtnMspz6emiJatzHSdPhA3LwvHJs1GUzsXLyGzCXLCNu3hTTPYF7u8TBdE0IYZjxBYv/OhMZHX7U5u9UGhxehWfcfdp5szDFrH1p28sLiH0Tm7oMYDx+htKCIV1uOoMRk5emkRcTVjydx0hgiarvAOR8pyd27k6Mr9nAq1Yt8cxiNPVfS0/8TZEAdluc9QlAtPWH1Iglq1oiUkxkcX7gc3baNvN1gACf9I+lTcoLBuQcI6N4Nd18fLGUGrAYD2R17U2ax4b/2N8SJHIplLdxsRrpmTsOKjt2t7yPdMwzt8ePEn9iL1mwmpDATnd1GpncQcx59n16NwukR70utsEBn/6SuSAX5+cxl8FV/yD2OadRyPOKaOq+WG3FsBWu/2MTBws60SDhD+8l3ovP2uWCVvMxc1r/xEQX7DjC17b3c3iyCR1oG0rBJ7Uorw3A2Bc/Nr8H+H9jNBCJuuZNanc4N6RjMNr7efIq9M3/g0c2zSG7SgSYvPkOd1o0rrf3KlL9/NwH7pyGSfmW3eTj2uO40GzkQd9+/hpzKzFZ+P5pNxqef02TdAnzNZZi0OtISWuDd9xYSJwzHV3+dJ3ztNo4vXMyW1UYKzKGE6NNp2yeI2rf1Q2g0mKw2lu87i+7ZR4lPO4JVaDiZ0Jrge+6i/d234aarZqe9ijNh/w8s/kVLSnFDNFiJDkonPFpHdNMIItu2BM9AysxWNu1IpvCLzwjev53w4hwA0kOiSR/zEK0H9aZhLd9rHjKxl+SjObUG29GVfLO6N6W2QAQ2wr3Tia0jiGqTwMkjaRxNOsMXvk05W2Dgy5VvYPfyxti6A7G39aVprw5oq9nPUwX5xQrPsPetV9ldcAt3vdAR78gI59ZTAaa8HMzLXsc36UtKAxIp7vA6tTq0v2CdnPQcNr75EZGrFpwbQqnfhrofvkfDeMc9L9VyaCVzP8mn2BJIs9qn6TB5KO7+5z7u5mflse6194lZtQB3u5UTiT1oO+VZIhLiHFZPReQfOsC277aSnBXHraHTqdOnM3SYDB7nAtxkMLH1+8XkL1jIvxIGkafRM+TsDnqZzxDU7xZa3dkfLz+fq7Ry7ewWK8d+Wcz2DSYKzaE0DdlO97EtIeGWP6feHt95kEOff0PY5pX4mUr5PnEIAePGcXdiDJEBnpVWS0XZjAZSflvFyZ2n6SmmoMHCPt1kZGQiCbd3xyssDICU5FQO/LyUvXkWZurqoDEa+Gb5a+TEN8CjSzea3nkrYfXib7geu9VG9s4dpGw7SspJQVZZBB19vqF19G7Mde8gw7cvxbENOPnZ/9Bu20zM2WS0SIo8vNnbbwTRY0bSNSHk+v84VyIV5JeQu2sbP3+ejbd7KQOf7IBfXKyzS7qqU0uXs3ZxCQHaM9wxqBDR49kLzhlkFBr55evFtP/sNTytJk7Ub0OdZx6jUdfrH0KpCHNhIVs/nce+EzH4uBXSfYA/8f3/uq1wxqkzbHn1Heps/o003zD2Tp3OxG51CfZxzqyDwqQjbJ+7kaT0WLTCQvMGObQafSv6kHN/8A5t2EXSrO+otW0t/sZiCvW+bJ3wT9re1pV28UG4OfgEpN1sIWneIgJOfkUt0zpKQnuQGnIfdfp2wyPo3HkHk8HIlm/mM9cQyPIMK53P7GNk9m78hg2j/chB6KpgDFja7WTv3MGRVQc4djoYo90XL20hQ/oeJaDzUAitT16pmUOrNpK1eh1eOzcTl50CwP6YZiQ99gq9GoWRGOWLu96xvwtl6WfQnFyN/uQijh0w8Vv+Y7hryogLz6F2y1r4NmrAwRUbKf79d+b7N2JtcAPiS7L456FfsLfvRL1B/ajbvoVTTuKrIL+M9N9XsuT7MrTCxsDJDQhpVj0/8huzs9jw8SKOptcmSJ9J79EJhCX+9f/z1IFk5q3Yw4wcb3QWI6+lraDJw/dTv1Nrp9SbsXkTa747RaEpkDHdl+F9x1Tw+uuE56mDx5m7dBef5XrhazPx76PzCbpjIO1GDKyS4KHgNHLtNGav6EipLZhmCRm0Hn0rnuHh5JaYWLj3LKtW7+bFb1/EIrSkNGhN8NAhtL37NnQODppLsllg71y2zjvIjpx+aLAQG3KWhDahxPftgbvPuU8DqXllbPj4G2LmzSS4rIBCvS85nXvT7P4xxLWq/N9tWZSO2P8DaRu2sODkA2gxUzv8LHXaRlKk8SR9x14KT6XxacNbOZ1Xxiubv6Rt5hHORtTB1q4T9e7oR92OrZ02y8RSXEDq2g2c3J3BqYwQjHY/NFgZ3eEnfFv2wBzflz35Wvb8upb4uZ8SUz77KM87gIKYBE6PmkxkQhx13CzEBnniFxHm0GNRQX4Fubu3s/iLFCzSg9FP1EKfUDW912uV/ftiFv9gwWjzpnWTTBIfuAut/lzYHdmyl6PvTqfu/k2k+oaz4fn3mdyjHjFBzp8nbzMayFr4ORFH/oX0CCCt+btE9xt4wUyP5Kxilv+0hlaf/5tAQxHFHt5ktetBg3EjSOhc+SdGS1NT2Pf9ctqWTsVNYyW9zpP49RiDLjiUbd//Sv68X0g12JnWegTNovyZZDlGx7tvIzg6/Oo7rwLSbidr21aOrT9M8il/Sm2B6DXFjOu5BG3zocg6PRE6DyxmC5u/W0LBjz9RJ3k3Z7xD+PbBadzWLIKEzONEJsQSXi8OjVvFx4AtpaWcXLaaI9tzCbNuo73Xt5SGt2GdbSyZGQVErV9GrZw0dNIGQKHel9mPfUCzOmG00pbQsF4kfrUcN8R3vewWMxmbN3J211Ha2D5EFJ9hZeHj5GsaULu+ltrdWlGidefgL8sxb96Eb/ppHu/yEMU6L8YcXsbIoysp1XlSEFQLY0Q0brFxuI0aS53IQKID9LhXwni7Q4NcCHEKKAZsgPVSDZ2vOgX5sW37SN97CFFSiFfSRurZ15DaZBJF3UcjfHzx10oaRgdc1y/8jZIl2Yilz2DZ/ysrTVNIHN6Z0FatANi3djun3v2QhKQdGLXupHa+hbbPPFxtxpwvkHGA1NnvsDB5DNEBafSY1A3/2vEXrGI2mdlcHqR1knais9t4Z/Rr9OybyIDmEfh7Xv/Vj2UZGZxcuZ7j+0tIK4xGIBnQfhsxQ8dx5HAuSV99S9jWc0MnRR4+pHfuS8Mpz9Owlt+NHbeDSauV9I0bKDiwk8bFH4KxgPkFr+Md5E1CxzhiundB664j7XgqK9bs4bNsLzIKypi/6AXc7VYsGi15/mGUhkVS2KEHHrf0Jz7Yi1hZSnBc1IVDB1KSvmUbh1Yf4nhqGBY88bTlEpazmahjK3mox1Ok+4QwIH0Xt6fvxpbQkIBWLajbtS216td2vXndUkL6HvYt2snRIzqyDDEA+Lnn0qRRKa0Ht0Z6hZGeWkRmbjE5h5IxHDuJPTsPffZpgrKScbPa+aXPeHRCUi81Hb9SE4SbqPvURBo1qeBFjeWqIsgTpZQ517J+dQnyPakFfP7cuzy46ye0/PVzyA1sxJaWHZnu35jbTm5iTNJK8hK7En/XHTTq3QmN1rFXLNqtVo7NX8LB9RkMCnoFt55PQufHsQstW5Oz+Xj9KTRrVvDw3nlk9B5Ip6cfqjY9xsuRFgsHZ3/Ppm0BSLS0a1tGizF3oLlELyUzNZPN3y3hY7e6JGWW8PTu74n3EoQOG0riXbehdb/6SSd7USaao4so2rWG2bvHIdHi755N3doGojs2YY01iB93p9N6xVyGHVvLqfqtCRwyhHbDb3f4GK1DWM3Yjq3h959OcyI9HJPdBw9NKXWi82jaO4Gwth2wIUjNKebMhq0UHE3GlJKC9kwq3tnpLI9qzeJ6XWlsyOaprQso8wzE4BeCxSeABO16asVlsrvkTk4a2hKSsZuIzK14FZ0iMzQGU90GaO4ZQePWjYgP9nbp+e2XU3ryKCd/387JwwZCrHvp6PsNVqnj08wf/rZua++f6Oj7LaUWX2bmzrpgWWPrQmLHd6Nup6HXVYcK8otkFhoY9NFG3DUwvXMQWmnHbrODuYTTy/aTYmhGvTppWMODsPz8PbWT9+But5LnE0RB++7Uf/k5Emr5V2pNxuwsDv2yggP73Cm2BhPmdYb+k1viXa8Jm2cvoOR/X7A6sAGr2tzGA51jGdE8DL/ggEqtwdFKTiax7rO1nMyvR6z/CQY+2xOCL31nRSkl+9IKSXp9GjGbVuBvKqFQ70tup97EjR8LEZEYi0ux7dyGudSAOTcfU0YxBYYQgt1S6Bf2AZnWWLafGgjWQuymEtxKS4hOPcqr7cdR2qo9w+v7cmvTcEJjXGfW0tXYDKWkrl7DsW1nOZkVRRffL2kckYSh3t2cKGmJobCMsiIzpSWSMoOWflGz8DYdY1d2D7aUjLlgX8JuodPWl5GNzKxuMoTSsHa0yz1BZMdEGnRogYcLXUxTaUqyIXkl0lzKidQANDo3tDodWncdWnc3fAL0+AR5IIU7JWU6tHp3tB6eaD080HroETo9XOeJUkcH+UkgH5DAp1LKzy6xzkRgIkBsbGyblJSUG273ehnLDPx2x2jmxXbgudcm0Sjiwo/QdrOJdW/O5OCZBBIi0+gwrjdmD0+2fzsfy4rlmIqKeabrP2hYy5f7TUm06taG2m2bXf/wS+ZBClbP5rvfu2PDnUjfVJp3DSGmd082fT0P2+yZROadIcc7iKKR4+n96Dj0Ote9j4m02zkx72fE3m+p47GZ/Ig72XG2Iz7+bngHeeET4od3eCiBdaNx9zv3h8pQZmTTnEUUz/+Fusf3MqdBX+Y27EtDwyme3buDMxGdKfKvA4BPSRpakcSs6GisBi9eXzsds5s7VjcdVp0HhgZNqTfxXpq0a+bMH0OVsBYVwLHluB35mX37dKwvnACAhyjBS1eCl4eRHo22ERDmSa4tnhxjBF5B/niHBuFVqxYeIeEYzXYsFit+/pU3vVK5Po4O8igp5RkhRBiwAnhESrnucus7s0dut9tZNPof1N+1lqynXqH7A/dccj1ps7Fj+ldsPxwHCMZ0WYBvl+EQ14nMgjJ+PZTFsh0nef6zx9HbLBjcPMiuFY+1fiN8+/ShYd/OhPlevrdiN1s4sWwFhkMbaWacjl2jZ4vbS/jUjia/WVuOF1hg2qt0TNpMekAtbMPH0n3ySNf82H85Remw6l+cPZbPypShlNoCsPPXsMnAwFeI9T3OadGNbbkD8Pay4uMrEG6S4qIy2gX+QFDOLn7PmUC6piVRUWVEtG1AULMWePl5o9e7u97YrANZ8rMxZGfgFR6Bm1/wNd0KWqleqmzWihDiFaBESvn25dZxZpD/+n8fUHvODI71v4dB779y1fWLjx0kZeVqmha8BaZCNlmfwCOuMY0G98IrNISU5FQOzl+Ocf9+vE4mEZmTyjcN+/Fj/V7U97DwxPa5yIaNCW7TkogmCWQfSSbrRAYZZ4IoswXhY0qjyeH/oimx4Gk1AfBwj8c5HhBNP7c8Rsa703ncMNxq2p0EL0EaSzBknqX0bAYl2XlE+KShN6WRmiLZfaI+JUZPSi1+mOW5GTnDEmYQntgWe4NBaGo1uMreFcX1OSzIhRDegEZKWVz+egXwf1LKZZfbxllBvvXn5Xi/9CQnE1py27xZFbvNqrkUuX8ei783cLqoHhos1I3MoOktjYlon4gQAiklhdn5HDlyipPpBRQeOUbspq1EnD2A3lJMeq0OHK0/HLtGh68umSxLNs0OrMcUGIItNAy3iAi8oiPx69KZyJhwIv31qkd5Mbsdc342NrMJz4jqfwGXolQmRwZ5HeCX8m/dgDlSyn9faRtnBPnp3DLmPPAs7dIPk7hkHn5B13+iMm/Pdg4u3c2R0xGYpTf9Ir+invcOUguiWJj9wt/Wv9X339Qq3Ue6MYHDAcOJuaUJtXt0w68aXPKrKIrruKkvCCoxWRn68UYyi0wsuK8F8bGVM1XPUpDLsUW/EVC2k8jwMkpkOMcy4/Hw9sDdR4+Hjzce/j4ERATgHhAEnoHgpp4GoyjK9blckFevW3s5gM1qY+H9T2Pza8pHjw8mPrbynjmpCwim8ZgRwLn7mvsArSpt74qiKNemZj9yBFjy3Ou02r6cp0KK6ZKgHhysKErNU6ODPHnXIRKWzOFYi670n/qYs8tRFEVxiBod5EkLlwPQ4uVnasRzIxVFUS6lRqebfdsWMv3DiGua4OxSFEVRHKbGnuw0WmwsDWpE+1Z/f36loihKTVJje+TbTuaxJLotMWNHOLsURVEUh6qxPfJ9qzZTy1JGh9rBzi5FURTFoWpskDea9QFTfAPwdB/u7FIURVEcqkYOraQlnSIy/yy06+DsUhRFURyuRgb5oQW/AVDntj5XWVNRFMX11cggN27aSL6nP/U7tHB2KYqiKA5X44LcYrYQcfwA2Y1aqYuAFEW5KdS4pNuXXsyDPZ5Ef9/9zi5FURSlStS4IP89KYc87wA6dG7u7FIURVGqRI0Lcs+vPmG45RT+XuqhDYqi3Bxq1Dzy3DNZdN21nJPhAc4uRVEUpcrUqB753oUr0CKJ6dfT2aUoiqJUmRoV5MXrN1Di7kXTXh2dXYqiKEqVqTFBbrfbCT28m/R6zXBzV+PjiqLcPColyIUQ/YUQR4UQyUKI5ytjnxV19Ggque4+eHbu4ozmFUVRnOaGg1wIoQU+Am4FGgMjhBCNb3S/FbUuy8ojPZ+g6YRRVd20oiiKU1VGj7wdkCylPCGlNAPfAXdUwn4rZN2RDBrW8iUiwLOqm1YURXGqygjyKCD1vO/Tyt+7gBBiohBihxBiR3Z2diU0+5ey4lIe/ehRxuTtqdT9KoqiuIIqO9kppfz/9u41RqryjuP49yc3ESgKrNxhV0SNUq8URFO1Wlu1iaSVGJLGVpOmTRt6e9c0TUub9EWNtkltqrEtjW1Nq9W2UsolGo3tC6VSAwIFFJDbAspFWBcRXPj3xRzb7cqyAzPMcx7290kmOTNz9pz/n4f97ZkzZ555OCKmRsTUpqamum570/I1fOjwO4wZM6Ku2zUzy0E9grwVGN/p/rjisYZ5Y/WrAIy85IJG7tbMrBTqEeQvAZMltUjqD8wG5tdhu1Vrf20DABMvvaiRuzUzK4WagzwiOoA5wBJgDfB4RKyudbsnVMOWTeweNIxBQwc3crdmZqVQl7lWImIhsLAe2zoZK4c1M2LoKD6aqgAzs4SynzQrInh05Ee4c+r4nlc2MzsNZf8R/R272+DAASad69MqZtY7ZR/kW59/gSf/9h0u3Pla6lLMzJLIPsj3rlsPwDhfemhmvVT2QX5440YO9h3AqEnjUpdiZpZE9kHet3Ure84ZxRlnZN+KmdlJyT79hu5q5eCoD0ztYmbWa2Qd5O8c6uDR82/k7es+kboUM7Nksg7y1/ccYFHLDIZe748CmVnvlXWQb163iQltO5k0zHOQm1nvlXWQH1nwFA8+ez8Th/ZPXYqZWTJZB3ls3szewcM4a8ig1KWYmSWTdZAPfGMbbU1jUpdhZpZUtkF+9OhRhr+1k46xE1KXYmaWVLZBvmP9FgZ2HGbAeS2pSzEzSyrbIH/9UB/mTr+Hs2+4PnUpZmZJZRvkG9uPsHT0JbRMOT91KWZmSWUb5G0vLmXavo2cO2RA6lLMzJLK9huCWhb/kQsOtiN9NXUpZmZJ1XRELmmupFZJy4vbbfUqrCdDd2/n4Ch/FWKpuwAABvVJREFUvZuZWT2OyH8SEffVYTtVa9/XxvADb/HWhImN3K2ZWSlleY5884q1AAyZPClxJWZm6dUjyOdIekXSPEnndLeSpC9KWiZp2a5du2ra4RurXwVg5JQLa9qOmdnpoMcgl/SMpFXHuM0EHgQmAZcDO4D7u9tORDwcEVMjYmpTU1NNRa9qvow5H/smzVdcXNN2zMxOBz2eI4+Ij1ezIUm/ABbUXFEVXtvfwaHm8xl41pmN2J2ZWanV9GanpNERsaO4+2lgVe0l9WzsM39m2Bi/0WlmBrVftXKvpMuBADYBX6q5oh4c6TjCJ198ii3X3Hyqd2VmloWagjwi7qpXIdXasWELZx45zICW8xq9azOzUsru8sPWV9YBMOwiz7FiZgYZBvnetZVLD8dfdlHiSszMyiG7IH9323be7dOfkS3jUpdiZlYK2U2atfjaO2htuYEFZ2T3N8jM7JTILg237XuXESOHpS7DzKw0sgvyW5f8munbV6cuw8ysNLIK8ra9+7lpwwuMb38zdSlmZqWRVZBvX/s6AGeNH5u4EjOz8sgqyPds3ATAOZP88Xwzs/dlFeRvb9oKwOjJzWkLMTMrkbyCfF87bf0H0TRhTOpSzMxKI6vryI/c+VmenH4r0/v2SV2KmVlpZBXks6dNYPa0CanLMDMrlaxOrZiZ2Qc5yM3MMucgNzPLnIPczCxzDnIzs8w5yM3MMucgNzPLnIPczCxziojG71TaBWw+yR8fAeyuYzkpuZfyOV36APdSVrX0MjEimro+mCTIayFpWURMTV1HPbiX8jld+gD3UlanohefWjEzy5yD3MwsczkG+cOpC6gj91I+p0sf4F7Kqu69ZHeO3MzM/l+OR+RmZtaJg9zMLHOlDXJJt0haJ2m9pG8d4/kBkh4rnl8qqbnxVVanil7ulrRL0vLi9oUUdfZE0jxJb0pa1c3zkvTTos9XJF3Z6BqrUUUfN0ja32k8vtvoGqslabyk5yT9W9JqSV8/xjq5jEs1vZR+bCSdKemfklYUfXz/GOvUN78ionQ3oA+wATgP6A+sAC7uss5XgIeK5dnAY6nrrqGXu4Gfpa61il6uA64EVnXz/G3AIkDA1cDS1DWfZB83AAtS11llL6OBK4vlIcCrx/j/lcu4VNNL6cem+HceXCz3A5YCV3dZp675VdYj8mnA+ojYGBGHgT8AM7usMxN4pFh+ArhJkhpYY7Wq6SULEfF3YO9xVpkJ/CYqXgTOljS6MdVVr4o+shEROyLi5WL5bWANMLbLarmMSzW9lF7x79xe3O1X3LpeVVLX/CprkI8Ftna6v40PDuh/14mIDmA/MLwh1Z2YanoBuKN42fuEpPGNKa3uqu01BzOKl8aLJF2SuphqFC/Pr6ByBNhZduNynF4gg7GR1EfScuBN4OmI6HZM6pFfZQ3y3uavQHNEXAo8zf/+UlsaL1OZ0+Iy4AHgL4nr6ZGkwcCTwDcioi11PbXooZcsxiYijkTE5cA4YJqkKadyf2UN8lag81HpuOKxY64jqS8wFNjTkOpOTI+9RMSeiDhU3P0lcFWDaqu3asat9CKi7f2XxhGxEOgnaUTisrolqR+V4Hs0Iv50jFWyGZeeesltbCJiH/AccEuXp+qaX2UN8peAyZJaJPWn8mbA/C7rzAc+XyzPAp6N4p2Dkumxly7nK2+ncm4wR/OBzxVXSVwN7I+IHamLOlGSRr1/vlLSNCq/J2U8SKCo81fAmoj4cTerZTEu1fSSw9hIapJ0drE8ELgZWNtltbrmV9+T/cFTKSI6JM0BllC56mNeRKyW9ANgWUTMpzLgv5W0nsobV7PTVdy9Knv5mqTbgQ4qvdydrODjkPR7KlcNjJC0DfgelTdyiIiHgIVUrpBYD7wD3JOm0uOroo9ZwJcldQAHgdklPUgAuBa4C1hZnJMF+DYwAfIaF6rrJYexGQ08IqkPlT80j0fEglOZX/6IvplZ5sp6asXMzKrkIDczy5yD3Mwscw5yM7PMOcjNzDLnILfTmqThnWbK2ymptVhul/Tz1PWZ1YMvP7ReQ9JcoD0i7ktdi1k9+YjceqViXusFxfJcSY9I+oekzZI+I+leSSslLS4+No6kqyQ9L+lfkpaUcQZB650c5GYVk4AbqUyR8DvguYj4MJVPD36qCPMHgFkRcRUwD/hhqmLNOivlR/TNElgUEe9JWkllKoXFxeMrgWbgQmAK8HQx1UcfoHTzlVjv5CA3qzgEEBFHJb3Xaf6Oo1R+TwSsjogZqQo0645PrZhVZx3QJGkGVKZbLeuXGljv4yA3q0LxNX2zgB9JWgEsB65JW5VZhS8/NDPLnI/Izcwy5yA3M8ucg9zMLHMOcjOzzDnIzcwy5yA3M8ucg9zMLHP/AfAWvcNx07eOAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    }
  ]
}
